/*
 * @Author: your name
 * @Date: 2021-11-01 15:56:55
 * @LastEditTime: 2021-11-03 10:01:29
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: /my-draw/src/utils/draw/draw.API.ts
 */
import type { Feature, GeoJSON, FeatureCollection, Geometry, Point, Position } from './draw.constant';
import { EMode } from './draw.constant';
import type { Object, FeatureStore, FunctionObj } from './draw.constant'


export interface IDraw {

    /**
     * 10.14
     */

    // 绘制点线面功能，右键结束或者点击上个点结束；
    /**
     * @description: 开始绘制
     * @param {EMode} mode
     * @param {number} id
     * @return {string}
     */
    startDraw(mode: EMode, id: number): string

    // 可以设置初始数据geojson；
    setFeatureCollection(geojson: GeoJSON): void

    // 可以获取到全部绘制数据；
    getAll(): FeatureStore

    // 可以根据要素id删除要素；
    delFeatureById(id: string): void

    // 清空绘制要素；
    clearFeatureCollection(): void

    // 可以根据要素id获取到要素数据；
    getFeatureById(id: string): GeoJSON | undefined

    // 关闭绘制；
    endDraw(): void

    // 绘制事件：开始绘制、结束绘制、绘制中；
    on(type: 'before' | 'after' | 'draw', callback: Function): Function
    off(type?: 'before' | 'after' | 'draw'): void

    /**
     * 10.21
     */

    //  添加要素
    // add(feature: Feature): string | false

    // 更新要素
    // update(id: string, options: any): boolean

    // 删除模式
    // editFeature(): void

    // 编辑模式

    // setColor(color : string) 无 设置编辑要素颜色
    // setEditColor(<EditOptions>EditOptions) 无 设置要素编辑态颜色
    // selectFeature(featureId) 无 通过 id 选择要素
    // getSelected() 无 获得已选要素
    // hideFeature(featureId) boolean 隐藏要素
    // showFeature(featureId) boolean 显示要素

}